﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

public class BehaviorRegistor
{
    public static void RegisterNodeHandler(Dictionary<int,INodeHandler<BehaviorEntity>> nodeHandlers)
    {
        nodeHandlers.Add(BehaviorNodeType.ConditionNode, new ConditionNodeHandler());
        nodeHandlers.Add(BehaviorNodeType.LoopNode, new LoopNodeHandler());
        nodeHandlers.Add(BehaviorNodeType.ParallelNode, new ParallelNodeHandler());
        nodeHandlers.Add(BehaviorNodeType.SelectorNode, new SelectorNodeHandler());
        nodeHandlers.Add(BehaviorNodeType.SequenceNode, new SequenceNodeHandler());
        nodeHandlers.Add(BehaviorNodeType.WaitNode, new WaitNodeHandler());
        nodeHandlers.Add(BehaviorNodeType.EnterNode, new EnterNodeHandler());


    }

    public static void RegisterNodeDataSerilizor(Dictionary<int, INodeDataSerializor> nodeDataSerilizors)
    {
        nodeDataSerilizors.Add(BehaviorNodeType.ParallelNode, new MultBranchSerializor());
        nodeDataSerilizors.Add(BehaviorNodeType.SelectorNode, new MultBranchSerializor());
        nodeDataSerilizors.Add(BehaviorNodeType.SequenceNode, new MultBranchSerializor());

        nodeDataSerilizors.Add(BehaviorNodeType.EnterNode, new SingleBranchSerializor());
        nodeDataSerilizors.Add(BehaviorNodeType.LoopNode, new SingleBranchSerializor());

        nodeDataSerilizors.Add(BehaviorNodeType.ConditionNode, new LeafSerializor());
        nodeDataSerilizors.Add(BehaviorNodeType.WaitNode, new LeafSerializor());
    }

    public static void RegisterTaskDataSerilizor(Dictionary<int, ITaskDataSerializor> taskDataSerilizors)
    {
        taskDataSerilizors.Add(TaskDataType.None, new NoneTaskDataSerializor());
        taskDataSerilizors.Add(TaskDataType.BoolData, new BoolTaskDataSerializor());
        taskDataSerilizors.Add(TaskDataType.ConditionData, new ConditionTaskDataSerializor());
        taskDataSerilizors.Add(TaskDataType.NumData, new NumTaskDataSerializor());
    }
}
